package advice;

import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;

import java.util.Arrays;

public class BeforeAndAfterAdvice {
    //有内置增强和自定义增强
    //日志对象
    private static Logger logger =  Logger.getLogger(BeforeAndAfterAdvice.class);

    public void before(JoinPoint jp){
        //jp.getTarget() 目标对象 就是哪个类
        //jp.getSignature().getName()可以取到方法名
        //jp.getArgs()  方法参数
        System.out.println("调用了"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法，方法的参数是："+ Arrays.toString(jp.getArgs()));
    }


    public void afterReturnning(JoinPoint jp, Object result){
        System.out.println("调用了"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法，方法的返回值是："+result);
    }


    public void throwException(JoinPoint jp, Exception e){
        System.out.println("调用了"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法，方法发生异常："+e);
    }

    //最终增强 不管有没有异常都会执行
    public void after(JoinPoint jp){
        System.out.println("调用了"+jp.getTarget()+"的"+jp.getSignature().getName()+"方法，最终增强");
    }


    //前置增强
    // 后置增强
    // 异常增强
    // 最终增强
    // 环绕增强（前置+后置）






}
